<?php

 
namespace ImiApp\ApiServer\Api\Controller\task;
// use Imi\Log\Log;
// use Imi\Bean\Annotation\Bean;
// use Imi\Queue\Contract\IMessage;
// use Imi\Queue\Driver\IQueueDriver;
// use Imi\Queue\Service\BaseQueueConsumer;

use Imi\Cron\Annotation\Cron;
use Imi\Cron\Contract\ICronTask;

use Imi\Db\Db;
 
/**
 * @Cron(id="CronRandomWorker",  second="2n",successLog=false,  type="random_worker")
 */
class CronRandomWorker implements ICronTask
{
    /**
     * 执行任务
     *
     * @param string $id
     * @param mixed $data
     * @return void
     */
    public function run(string $id, $data): void
    {
        //连接数据库
        try {
            Db::name('config')->limit(1)->find();
        } catch (\Throwable $th) {
            var_dump('异常random'.date('Y-m-d H:i:s').__METHOD__.$th->getMessage());
        }
        
        
        // var_dump('random'.date('Y-m-d H:i:s').__METHOD__.$id,$data);
    }
 


//     注解设定
// 注解 @Cron，类 Imi\Cron\Annotation\Cron

// @Cron(id="任务唯一ID", type="", year="", month="", day="", hour="", minute="", second="", unique=null, redisPool="", lockWaitTimeout="", maxExecutionTime="", force=false, delayMin=0, delayMax=0, successLog=true)

// 属性
// id:

// 使用@Cron注解时的任务唯一ID。如果是 Task、Process，默认使用 Task 或 Process + 名称。

// type:

// 任务类型

// 可选：

// random_worker-随机工作进程任务

// all_worker-所有工作进程执行的任务

// task-后台任务

// process-进程

// cron_process-定时任务进程

// force:

// 每次启动服务强制执行，默认为false

// year:

// 指定任务执行年份，默认为 *。

// * - 不限制

// 2019 - 指定年

// 2019-2022 - 指定年份区间

// 2019,2021,2022 - 指定多个年份

// 2n - 每 2 年，其它以此类推

// 取值范围：>=1 and <= 2100，不在范围内会抛出异常。
// 在 imi 3.0 中会考虑移除最大到 2100 年的限制。（不过真的有项目能跑到那个时候吗？）
// month:

// 指定任务执行月份，默认为 *。

// * - 不限制

// 1 (1 月), -1 (12 月) - 指定月份，支持负数为倒数的月

// 1-6 (1-6 月), -3--1 (10-12 月) - 指定月份区间，支持负数为倒数的月

// 1,3,5,-1 (1、3、5、12 月) - 指定多个月份，支持负数为倒数的月

// 2n - 每 2 个月，其它以此类推

// 取值范围：>=1 and <= 12，不在范围内会抛出异常。
// day:

// 指定任务执行日期，默认为 *。

// * - 不限制

// 1 (1 日), -1 (每月最后一天) - 指定日期，支持负数为倒数的日期

// 1-6 (1-6 日), -3--1 (每月倒数 3 天) - 指定日期区间，支持负数为倒数的日期

// 1,3,5,-1 (每月 1、3、5、最后一天) - 指定多个日期，支持负数为倒数的日期

// 2n - 每 2 天，其它以此类推

// year 1 (一年中的第 1 日), year -1 (每年最后一天) - 指定一年中的日期，支持负数为倒数的日期

// 1-6 (一年中的第 1-6 日), -3--1 (每年倒数 3 天) - 指定一年中的日期区间，支持负数为倒数的日期

// year 1-6 (一年中的第 1-6 日), year -3--1 (每年倒数 3 天) - 指定一年中的日期区间，支持负数为倒数的日期

// 1,3,5,-1 (每年 1、3、5、最后一天) - 指定一年中的多个日期，支持负数为倒数的日期

// year 1,3,5,-1 (每年 1、3、5、最后一天) - 指定一年中的多个日期，支持负数为倒数的日期

// 取值范围：>=1 and <= 31，不在范围内会抛出异常。
// 带 year 的取值范围：>=1 and <= 366，不在范围内会抛出异常。
// week:

// 指定周几执行任务，默认为 *。
// * - 不限制
// 1 (周一), -1 (周日) - 指定周几（1-7），支持负数为倒数的周
// 1-6 (周一到周六), -3--1 (周五到周日) - 指定周几，支持负数为倒数的周
// 1,3,5,-1 (周一、三、五、日) - 指定多个日期，支持负数为倒数的周

// 取值范围：>=1 and <= 7，不在范围内会抛出异常。
// hour:

// 指定任务执行小时，默认为 *。

// * - 不限制

// 0 (0 点), -1 (23 点) - 指定小时，支持负数为倒数的小时

// 1-6 (1-6 店), -3--1 (21-23 点) - 指定小时区间，支持负数为倒数的小时

// 1,3,5,-1 (1、3、5、23 点) - 指定多个小时，支持负数为倒数的小时

// 2n - 每 2 小时，其它以此类推

// 取值范围：>=0 and <= 23，不在范围内会抛出异常。
// minute:

// 指定任务执行分钟，默认为 *。

// * - 不限制

// 0 (0 分), -1 (59 分) - 指定分钟，支持负数为倒数的分钟

// 1-6 (1-6 分), -3--1 (57-59 分) - 指定分钟区间，支持负数为倒数的分钟

// 1,3,5,-1 (1、3、5、59 分) - 指定多个分钟，支持负数为倒数的分钟

// 2n - 每 2 分钟，其它以此类推

// 取值范围：>=0 and <= 59，不在范围内会抛出异常。
// second:

// 指定任务执行秒，默认为 *。

// * - 不限制

// 0 (0 秒), -1 (59 秒) - 指定秒，支持负数为倒数的秒

// 1-6 (1-6 秒), -3--1 (57-59 秒) - 指定秒区间，支持负数为倒数的秒

// 1,3,5,-1 (1、3、5、59 秒) - 指定多个秒，支持负数为倒数的秒

// 2n - 每 2 秒，其它以此类推

// 取值范围：>=0 and <= 59，不在范围内会抛出异常。
// unique:

// 定时任务唯一性设置
// 当前实例唯一: current
// 所有实例唯一: all
// 不唯一: null
}